function [ data, target ] = genData( n,d, separable, mu1, mu2, sigma1, sigma2 )
%GENDATA Generiert normalverteilte Daten
%

R = chol(sigma1);
z1 = repmat(mu1,n/2,1) + randn(n/2,d)*R;

R = chol(sigma2);
z2 = repmat(mu2,n/2,1) + randn(n/2,d)*R;

data = [z1;z2];

if (separable)
    %Die Werte m�ssen linear separierbar sein
    %Deshalb wird eine Entscheidungsgrenze berechnet, und alle Werte
    %"links" von dieser Entscheidungsgrenze bekommen als Target -1, alle
    %Werte "Rechts" von dieser Entscheidungsgrenze bekommen als Target 1.
    %Als Entscheidungsgrenze wird zuerst die Gerade zwischen den beiden
    %Mittelwerten hergenommen, dann in der H�lfte geteilt und der
    %Normalvektor darauf gebildet. Dies ist dann die Entscheidungsgrenze
    
    w = mu2-mu1;            %w ist der Richtungsvektor zwischen den beiden Mittelwerten
    half = mu1 + 0.5 * w;   %Punkt auf der H�lfte der Geraden zwischen mu1 und mu2

    target = zeros (n,1);
    w = w / norm(w);
    %Berechne Abstand zwischen den Datenpunkten und der Geraden (in Hesse Normalform),
    %und speichere Vorzeichen
    %Abstand d = (P-A).n   
    %(P Punkt, A Punkt auf der Geraden, n Normalvektor zur Geraden)
    for i = 1:n
        target(i) = sign(dot(data(i,:)-half,w'));
    end

else
    target(1:n/2) = -1;
    target(n/2+1:n) = 1;
end

%end

